package com.td.module.agro.service.inputreview;

import com.td.framework.common.pojo.PageResult;
import com.td.module.agro.controller.admin.inputreview.vo.InputReviewCreateReqVO;
import com.td.module.agro.controller.admin.inputreview.vo.InputReviewExportReqVO;
import com.td.module.agro.controller.admin.inputreview.vo.InputReviewPageReqVO;
import com.td.module.agro.controller.admin.inputreview.vo.InputReviewUpdateReqVO;
import com.td.module.agro.convert.inputreview.InputReviewConvert;
import com.td.module.agro.dal.dataobject.inputreview.InputReviewDO;
import com.td.module.agro.dal.mysql.inputreview.InputReviewMapper;
import org.springframework.stereotype.Service;
import org.springframework.validation.annotation.Validated;

import javax.annotation.Resource;
import java.util.Collection;
import java.util.List;


/**
 * 商品与投入品中间 Service 实现类
 *
 * @author 吴佰强
 */
@Service
@Validated
public class InputReviewServiceImpl implements InputReviewService {

    @Resource
    private InputReviewMapper inputReviewMapper;

    @Override
    public Long createInputReview(InputReviewCreateReqVO createReqVO) {
        // 插入
        InputReviewDO inputReview = InputReviewConvert.INSTANCE.convert(createReqVO);
        inputReviewMapper.insert(inputReview);
        // 返回
        return inputReview.getId();
    }

    @Override
    public void updateInputReview(InputReviewUpdateReqVO updateReqVO) {
        // 校验存在
      //  this.validateInputReviewExists(updateReqVO.getId());
        // 更新
        InputReviewDO updateObj = InputReviewConvert.INSTANCE.convert(updateReqVO);
        inputReviewMapper.updateById(updateObj);
    }

    @Override
    public void deleteInputReview(Long id) {
        // 校验存在
      //  this.validateInputReviewExists(id);
        // 删除
        inputReviewMapper.deleteById(id);
    }

//    private void validateInputReviewExists(Long id) {
//        if (inputReviewMapper.selectById(id) == null) {
//            throw exception(INPUT_REVIEW_NOT_EXISTS);
//        }
//    }

    @Override
    public InputReviewDO getInputReview(Long id) {
        return inputReviewMapper.selectById(id);
    }

    @Override
    public List<InputReviewDO> getInputReviewList(Collection<Long> ids) {
        return inputReviewMapper.selectBatchIds(ids);
    }

    @Override
    public PageResult<InputReviewDO> getInputReviewPage(InputReviewPageReqVO pageReqVO) {
        return inputReviewMapper.selectPage(pageReqVO);
    }

    @Override
    public List<InputReviewDO> getInputReviewList(InputReviewExportReqVO exportReqVO) {
        return inputReviewMapper.selectList(exportReqVO);
    }

}
